The present invention relates to a memory address mapping mechanism suitable for a computer system using a microprocessor with a plurality of address modes, whose address spaces have different sizes.
Along with the development of semiconductor techniques inexpensive microprocessors and LSIs are available, so that they can be desirably combined to configure a computer system for achieving optimal performance in specific problem areas. The advances of these semiconductor devices can be found, in particular, in microprocessors. For example, a 16-bit microprocessor for supporting multiuser and multitask architecture, has been developed, as exemplified by a 16-bit microprocessor iAPX286 available from Intel, Inc. This microprocessor has real and protective virtual address modes as execution address modes. In the real address mode, a maximum of 1-Mbyte of address space can be accessed; and in the protective virtual address mode, a maximum of 16-Mbytes of address space can be accessed.
A memory map of a computer system using the above microprocessor is shown in FIG. 1. FIG. 1A shows a memory map in the real address mode, and FIG. 1B shows a memory map in the protective virtual address mode. As is apparent from FIGS. 1A and 1B, common addresses from address "000000" (hexadecimal) to address "0FFFFF" (hexadecimal) are assigned in both the real and protective virtual address modes. Common address allocation in both the modes is aimed at simplifying logic circuits in an address decoder. As shown in FIG. 1B, in the protective virtual address mode, an expansion memory space from address "100000" (hexadecimal) to address "FFFFFF" (hexadecimal) is assigned for a main memory, an area reserved for future use (RFU), and an initial program loading (IPL). For this reason, the main memory address space starting from address "000000" (hexadecimal) is not assigned as a continuous space, and graphic display buffer and IPL ROM address areas are allocated therebetween. According to the allocation described above, however, program memory allocation must always be taken into consideration upon programming of application software, thus overloading programmers.